package com.jrx.anytxn.customer.mapper.ext;

import com.jrx.anytxn.customer.entity.CmLimitAdjustLog;
import com.jrx.anytxn.customer.mapper.base.CmLimitAdjustLogMapper;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * 调额历史mappre 扩展
 *
 * @author yf
 * date 2020/4/10 0010
 * @version V1.0
 **/
public interface ExtCmLimitAdjustLogMapper extends CmLimitAdjustLogMapper {

    /**
     * 根据租户ID和客户ID查询相关调额历史表信息
     * @author fan.yang
     * date: 2020/4/10 0010 上午 11:28
     * @param tenantId 租户ID
     * @param customerId 客户ID
     * @return java.util.List<com.jrx.anytxn.customer.entity.CmLimitAdjustLog>
     */
    List<CmLimitAdjustLog> selectByTenIdAndCusId(@Param("tenantId") String tenantId,@Param("customerId") String customerId);


    /**
     * 根据租户ID和客户ID和渠道号查询相关调额历史表信息
     * @author xuhui.gao
     * date: 2020/11/11 0010 上午 11:28
     * @param tenantId 租户ID
     * @param customerId 客户ID
     * @param channel 渠道号
     * @return java.util.List<com.jrx.anytxn.customer.entity.CmLimitAdjustLog>
     */
    List<CmLimitAdjustLog> selectByTenIdAndCusIdAndChannel(@Param("tenantId") String tenantId,@Param("customerId") String customerId,@Param("channel") String channel);

    /**
     * 根据业务日期，状态查询
     * @param businessDate
     * @param result
     * @return
     */
    List<CmLimitAdjustLog> selectByBatch(@Param("businessDate") Date businessDate,
                                         @Param("result") String result);


    CmLimitAdjustLog selectBySeqNoAndCusId(@Param("tenantId") String tenantId,
                                           @Param("customerId") String customerId,
                                           @Param("seqNo") String seqNo);


    List<CmLimitAdjustLog> selectByTenIdAndCusIdAndNotAdjustType(@Param("tenantId") String tenantId,
                                                                 @Param("customerId") String customerId,
                                                                 @Param("adjustType") String adjustType);

    CmLimitAdjustLog selectByTenIdAndCusIdAndId(@Param("tenantId") String tenantId,
                                                 @Param("customerId") String customerId,
                                                 @Param("id") Long id);

    List<CmLimitAdjustLog> selectByTenIdAndNotAdjustType(@Param("tenantId") String tenantId,
                                                         @Param("adjustType") String adjustType);

    /**
     * 查询用户首次额度
     * @param tenantId
     * @param customerId
     * @param limitIds
     * @param status
     * @param etlEffectiveDate
     * @return
     */
    CmLimitAdjustLog queryFirstAdjustLimitInfo(@Param("tenantId") String tenantId,
                                               @Param("customerId") String customerId,
                                               @Param("limitIds") List<String> limitIds,
                                               @Param("status") String status,
                                               @Param("etlEffectiveDate") Date etlEffectiveDate);

}
